[小ネタ]CloudShellのダウンロード機能では0バイトのファイルをダウンロードできません
初めに
みなさん、メリークリスマス。
東京オフィス コンサル部の芦沢(あしさん)です。
主題の件について、おもしろいなと思ったのでブログにしてみました。
別件でCloudShellを長時間触っていた時に見つけた仕様?のようなものです。
いきなりまとめ
- CloudShell上にある0Byteファイルは、CloudShellのファイルダウンロード機能を使ってもダウンロードできない(ダウンロード処理に失敗する)
- ローカル上の0Byteファイルを、CloudShellのファイルアップロード機能を使ってアップロードすると、アップロードには成功するがファイルにエラーが追記される(0Byteファイルではなくなる)
やってみた
※注意※ IAM権限はCloudShellFullAccess相当の権限が必要です。
まず、CloudShellを起動します。
任意の場所に0バイトファイルを用意します
[cloudshell-user@ip-x-x-x-x ~]$ touch test_0byte [cloudshell-user@ip-x-x-x-x ~]$ ls -l total 0 -rw-rw-r-- 1 cloudshell-user cloudshell-user 0 Dec 24 05:49 test_0byte
ファイルのフルパスを確認します。
[cloudshell-user@ip-x-x-x-x ~]$ echo "`pwd`/`ls -1`" /home/cloudshell-user/test_0byte
ActionsタブからDownload file
をクリックします。
ファイルのフルパスを入力し、Download
をクリックします。
以下のようなエラーが出てファイルがダウンロードできません。
Unable to download file. Check file name and path and try again. System message: Forbidden.
番外編:0バイトのファイルをアップロードしてみた
ダウンロードができないならアップロードはどうなんだろう?と思ったので、そっちも試してみました。
まず、ローカルPCにファイルサイズが0バイトのファイルを準備します。 今回は比較のために0バイトではないファイルも準備しています。
% ls -l total 8 -rw-r--r--@ 1 ashisan staff 0 12 21 10:31 test_0byte -rw-r--r-- 1 ashisan staff 2 12 21 10:31 test_2byte
CloudShellを起動します。
ActionsのUpload file
から「test_0byte」ファイルをアップロードします。
「test_0byte」ファイルをアップロードします。
Uploadは成功します。
しかし、ご覧の通り、ファイルサイズが0ではなく243になっていました。
[cloudshell-user@ip-x-x-x-x ~]$ ls -l total 4 -rw-rw-r-- 1 cloudshell-user cloudshell-user 243 Dec 21 01:47 test_0byte
ファイルの中身を確認すると、AccessDenied
というエラーが追記されていることが確認できます。
[cloudshell-user@ip-x-x-x-x ~]$ cat test_0byte <?xml version="1.0" encoding="UTF-8"?> <Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>EN1ECR50MWXF3QAA</RequestId><HostId>SGNBIk/r9SosQ97IdC++fFWbGcXMcLnZjwR/ZulKpHknns0b2YrrZzw14XoMnnvzItxBvdQzR4k=</HostId></Error>[cloudshell-user
最後に
CloudShellを使って0バイトファイルをダウンロードしたりアップロードしたりする場面に出くわしたら役に立ててください(何かを解決する訳ではありませんが)
以上、東京オフィス コンサル部の芦沢(あしさん)でした。